package com.hxl.demo.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.ibatis.annotations.Options;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;

import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;

public class Staff {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotNull(message="用户名不能为空")
    @Size(min=2, max=20, message="用户名长度在2~20个字")
    @Column(name = "user_name")
    private String userName;

    @NotNull(message="拼音首字母不能为空")
    @Size(min=2, max=20, message="拼音首字母长度在2~20个字")
    @Column(name = "pin_name")
    private String pinName;

    @NotNull(message="所属部门不能为空")
    @Column(name = "dept_id")
    private Integer deptId;

    /**
     * 用户类型：1-内部、2-客户、3-设备
     */
    @Column(name = "account_type")
    private String accountType;

    @Size(min=11, max=11, message="电话号码长度为11个字符串")
    private String tel;

    @NotNull(message="所属岗位不能为空")
    @Column(name = "post_id")
    private Integer postId;

    /**
     * 0-未知，1-男，2-女
     */
    private String sex;

    /**
     * 试用、正式、辞职、辞退  默认正式
     */
    private Integer incumbency;

    /**
     * 工资
     */
    @NotNull(message="工资不能为空")
    private Long wages;

    /**
     * 入职时间
     */
    @Past()
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Column(name = "entry_date")
    private Date entryDate;

    /**
     * 离职时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Column(name = "quit_date")
    private Date quitDate;

    /**
     * 转正时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Column(name = "correction_date")
    private Date correctionDate;

    @Column(name = "head_img")
    private String headImg;

    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthdate;

    @NotNull(message="身份证号码不能为空")
    @Column(name = "id_card")
    private String idCard;

    /**
     * 紧急联系电话
     */
    @Column(name = "urgent_tel")
    private String urgentTel;

    /**
     * 紧急联系人
     */
    @Column(name = "urgent_name")
    private String urgentName;



    /**
     * 其他联系方式
     */
    @Column(name = "other_tel")
    private String otherTel;

    @Column(name = "id_card_addr")
    private String idCardAddr;

    @Column(name = "live_addr")
    private String liveAddr;

    /**
     * 银行卡号
     */
    @NotNull(message="工资不能为空")
    @Column(name = "bank_card")
    private String bankCard;

    /**
     * 开户行
     */
    @Column(name = "opening_bank")
    private String openingBank;

    /**
     * 开户名
     */
    @Column(name = "opening_name")
    private String openingName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 身份证正面
     */
    @Column(name = "id_card_img_positive")
    private String idCardImgPositive;

    /**
     * 身份证反面
     */
    @Column(name = "id_card_img_back")
    private String idCardImgBack;

    /**
     * 健康证编号
     */
    @Column(name = "health_certificate_id")
    private Integer healthCertificateId;

    /**
     * 劳动合同编号
     */
    @Column(name = "abor_contract_id")
    private Integer aborContractId;

    /**
     * 社保编号
     */
    @NotNull(message="社保信息不能为空")
    @Column(name = "social_security_id")
    private Integer socialSecurityId;

    @Column(name = "insert_time")
    private Date insertTime;

    @Column(name = "dept_name")
    private String deptName;

    @Column(name = "post_name")
    private String postName;

    @Column(name = "password")
    private String password;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    private  Integer userId;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPostName() {
        return postName;
    }

    public void setPostName(String postName) {
        this.postName = postName;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    /**
     * 0无效，1有效
     */
    private String stat;

    /**
     * @return id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * @return user_name
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * @return pin_name
     */
    public String getPinName() {
        return pinName;
    }

    /**
     * @param pinName
     */
    public void setPinName(String pinName) {
        this.pinName = pinName;
    }

    /**
     * @return dept_id
     */
    public Integer getDeptId() {
        return deptId;
    }

    /**
     * @param deptId
     */
    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    /**
     * 获取用户类型：1-内部、2-客户、3-设备
     *
     * @return account_type - 用户类型：1-内部、2-客户、3-设备
     */
    public String getAccountType() {
        return accountType;
    }

    /**
     * 设置用户类型：1-内部、2-客户、3-设备
     *
     * @param accountType 用户类型：1-内部、2-客户、3-设备
     */
    public void setAccountType(String accountType) {
        this.accountType = accountType;
    }

    /**
     * @return tel
     */
    public String getTel() {
        return tel;
    }

    /**
     * @param tel
     */
    public void setTel(String tel) {
        this.tel = tel;
    }

    /**
     * @return post_id
     */
    public Integer getPostId() {
        return postId;
    }

    /**
     * @param postId
     */
    public void setPostId(Integer postId) {
        this.postId = postId;
    }

    /**
     * 获取0-未知，1-男，2-女
     *
     * @return sex - 0-未知，1-男，2-女
     */
    public String getSex() {
        return sex;
    }

    /**
     * 设置0-未知，1-男，2-女
     *
     * @param sex 0-未知，1-男，2-女
     */
    public void setSex(String sex) {
        this.sex = sex;
    }

    /**
     * 获取试用、正式、辞职、辞退  默认正式
     *
     * @return incumbency - 试用、正式、辞职、辞退  默认正式
     */
    public Integer getIncumbency() {
        return incumbency;
    }

    /**
     * 设置试用、正式、辞职、辞退  默认正式
     *
     * @param incumbency 试用、正式、辞职、辞退  默认正式
     */
    public void setIncumbency(Integer incumbency) {
        this.incumbency = incumbency;
    }

    /**
     * 获取工资
     *
     * @return wages - 工资
     */
    public Long getWages() {
        return wages;
    }

    /**
     * 设置工资
     *
     * @param wages 工资
     */
    public void setWages(Long wages) {
        this.wages = wages;
    }

    /**
     * 获取入职时间
     *
     * @return entry_date - 入职时间
     */
    public Date getEntryDate() {
        return entryDate;
    }

    /**
     * 设置入职时间
     *
     * @param entryDate 入职时间
     */
    public void setEntryDate(Date entryDate) {
        this.entryDate = entryDate;
    }

    /**
     * 获取离职时间
     *
     * @return quit_date - 离职时间
     */
    public Date getQuitDate() {
        return quitDate;
    }

    /**
     * 设置离职时间
     *
     * @param quitDate 离职时间
     */
    public void setQuitDate(Date quitDate) {
        this.quitDate = quitDate;
    }

    /**
     * 获取转正时间
     *
     * @return correction_date - 转正时间
     */
    public Date getCorrectionDate() {
        return correctionDate;
    }

    /**
     * 设置转正时间
     *
     * @param correctionDate 转正时间
     */
    public void setCorrectionDate(Date correctionDate) {
        this.correctionDate = correctionDate;
    }

    /**
     * @return head_img
     */
    public String getHeadImg() {
        return headImg;
    }

    /**
     * @param headImg
     */
    public void setHeadImg(String headImg) {
        this.headImg = headImg;
    }

    /**
     * 获取生日
     *
     * @return birthdate - 生日
     */
    public Date getBirthdate() {
        return birthdate;
    }

    /**
     * 设置生日
     *
     * @param birthdate 生日
     */
    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    /**
     * @return id_card
     */
    public String getIdCard() {
        return idCard;
    }

    /**
     * @param idCard
     */
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    /**
     * 获取紧急联系电话
     *
     * @return urgent_tel - 紧急联系电话
     */
    public String getUrgentTel() {
        return urgentTel;
    }

    /**
     * 设置紧急联系电话
     *
     * @param urgentTel 紧急联系电话
     */
    public void setUrgentTel(String urgentTel) {
        this.urgentTel = urgentTel;
    }

    /**
     * 获取紧急联系人
     *
     * @return urgent_name - 紧急联系人
     */
    public String getUrgentName() {
        return urgentName;
    }

    /**
     * 设置紧急联系人
     *
     * @param urgentName 紧急联系人
     */
    public void setUrgentName(String urgentName) {
        this.urgentName = urgentName;
    }

    /**
     * 获取其他联系方式
     *
     * @return other_tel - 其他联系方式
     */
    public String getOtherTel() {
        return otherTel;
    }

    /**
     * 设置其他联系方式
     *
     * @param otherTel 其他联系方式
     */
    public void setOtherTel(String otherTel) {
        this.otherTel = otherTel;
    }

    /**
     * @return id_card_addr
     */
    public String getIdCardAddr() {
        return idCardAddr;
    }

    /**
     * @param idCardAddr
     */
    public void setIdCardAddr(String idCardAddr) {
        this.idCardAddr = idCardAddr;
    }

    /**
     * @return live_addr
     */
    public String getLiveAddr() {
        return liveAddr;
    }

    /**
     * @param liveAddr
     */
    public void setLiveAddr(String liveAddr) {
        this.liveAddr = liveAddr;
    }

    /**
     * 获取银行卡号
     *
     * @return bank_card - 银行卡号
     */
    public String getBankCard() {
        return bankCard;
    }

    /**
     * 设置银行卡号
     *
     * @param bankCard 银行卡号
     */
    public void setBankCard(String bankCard) {
        this.bankCard = bankCard;
    }

    /**
     * 获取开户行
     *
     * @return opening_bank - 开户行
     */
    public String getOpeningBank() {
        return openingBank;
    }

    /**
     * 设置开户行
     *
     * @param openingBank 开户行
     */
    public void setOpeningBank(String openingBank) {
        this.openingBank = openingBank;
    }

    /**
     * 获取开户名
     *
     * @return opening_name - 开户名
     */
    public String getOpeningName() {
        return openingName;
    }

    /**
     * 设置开户名
     *
     * @param openingName 开户名
     */
    public void setOpeningName(String openingName) {
        this.openingName = openingName;
    }

    /**
     * 获取备注
     *
     * @return remark - 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     *
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 获取身份证正面
     *
     * @return id_card_img_positive - 身份证正面
     */
    public String getIdCardImgPositive() {
        return idCardImgPositive;
    }

    /**
     * 设置身份证正面
     *
     * @param idCardImgPositive 身份证正面
     */
    public void setIdCardImgPositive(String idCardImgPositive) {
        this.idCardImgPositive = idCardImgPositive;
    }

    /**
     * 获取身份证反面
     *
     * @return id_card_img_back - 身份证反面
     */
    public String getIdCardImgBack() {
        return idCardImgBack;
    }

    /**
     * 设置身份证反面
     *
     * @param idCardImgBack 身份证反面
     */
    public void setIdCardImgBack(String idCardImgBack) {
        this.idCardImgBack = idCardImgBack;
    }

    /**
     * 获取健康证编号
     *
     * @return health_certificate_id - 健康证编号
     */
    public Integer getHealthCertificateId() {
        return healthCertificateId;
    }

    /**
     * 设置健康证编号
     *
     * @param healthCertificateId 健康证编号
     */
    public void setHealthCertificateId(Integer healthCertificateId) {
        this.healthCertificateId = healthCertificateId;
    }

    /**
     * 获取劳动合同编号
     *
     * @return abor_contract_id - 劳动合同编号
     */
    public Integer getAborContractId() {
        return aborContractId;
    }

    /**
     * 设置劳动合同编号
     *
     * @param aborContractId 劳动合同编号
     */
    public void setAborContractId(Integer aborContractId) {
        this.aborContractId = aborContractId;
    }

    /**
     * 获取社保编号
     *
     * @return social_security_id - 社保编号
     */
    public Integer getSocialSecurityId() {
        return socialSecurityId;
    }

    /**
     * 设置社保编号
     *
     * @param socialSecurityId 社保编号
     */
    public void setSocialSecurityId(Integer socialSecurityId) {
        this.socialSecurityId = socialSecurityId;
    }

    /**
     * @return insert_time
     */
    @JsonFormat(pattern = "yyyy-MM-dd  HH:mm:ss",timezone = "GMT+8")
    public Date getInsertTime() {
        return insertTime;
    }

    /**
     * @param insertTime
     */
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }

    /**
     * 获取0无效，1有效
     *
     * @return stat - 0无效，1有效
     */
    public String getStat() {
        return stat;
    }

    /**
     * 设置0无效，1有效
     *
     * @param stat 0无效，1有效
     */
    public void setStat(String stat) {
        this.stat = stat;
    }
}